6 Pressurepath

In this chapter, we will see what a pressurepath object is and how to use it to compute the altitude of the bird throughout its trajectory.

Let’s load the tag from the Great Reed Warbler (18LX) created in the [advanced tutorial].

load("./data/interim/18LX.Rdata")

6.1 Timeseries at a single position

Before creating a full pressurepath, we start with the basic building block of a pressurepath, which is to retrieve the pressure timeseries from ERA5 at a single location with geopressure_timeseries.

geopressure_timeseries relies on the pressure timeseries entry point of GeoPressureAPI, which return the timeseries of pressure at a given latitude and longitude.

Let’s start by retrieving the pressure at the known site of equipment, querying the same date as the first stationary period.

ts <- geopressure_timeseries(
  lat = tag$stap$known_lat[1],
  lon = tag$stap$known_lon[1],
  start_time = tag$stap$start[1],
  end_time = tag$stap$end[1]
)
## 
⠙ Generate request (on GeoPressureAPI)

✔ Generate request (on GeoPressureAPI) [1.2s]
## 
⠙ Sending request

✔ Sending request [3.1s]
## 
⠙ Compute timeseries (on GEE server) and download csv

✔ Compute timeseries (on GEE server) and download csv […

We can compare the retrieved ERA5 pressure to the pressure measured on the Great Reed Warbler:

p <- ggplot() +
  geom_line(data = ts, aes(x = date, y = pressure_era5, colour = "ERA5")) +
  geom_line(data = tag$pressure[tag$pressure$stap_id == 1, ], aes(x = date, y = value, colour = "tag")) +
  theme_bw() +
  ylab("Pressure (hPa)") +
  scale_color_manual(values = c("ERA5" = "black", "tag" = "red"))
layout(ggplotly(p), legend = list(orientation = "h"))

6.2 Pressurepath

pressurepath <- pressurepath_create(tag,
  path = path_most_likely,
  include_flight = TRUE
)
## 
⠙ Generate requests (on GeoPressureAPI) for 29 stationa…

✔ Generate requests (on GeoPressureAPI) for 29 stationa…
## 
⠙ 1/29 ETA:  5s | 

⠹ 2/29 ETA:  6s | 

⠸ 3/29 ETA:  6s | 

⠼ 4/29 ETA:  6s | 

⠴ 5/29 ETA:  6s | 

⠦ 6/29 ETA:  7s | 

⠧ 7/29 ETA:  7s | 

⠇ 8/29 ETA:  7s | 

⠏ 9/29 ETA:  6s | 

⠋ 10/29 ETA:  6s | 

⠙ 11/29 ETA:  6s | 

⠹ 12/29 ETA:  6s | 

⠸ 13/29 ETA:  6s | 

⠼ 14/29 ETA:  6s | 

⠴ 15/29 ETA:  5s | 

⠦ 16/29 ETA:  5s | 

⠧ 17/29 ETA:  5s | 

⠇ 18/29 ETA:  5s | 

⠏ 19/29 ETA:  4s | 

⠋ 20/29 ETA:  4s | 

⠙ 21/29 ETA:  4s | 

⠹ 22/29 ETA:  3s | 

⠸ 23/29 ETA:  3s | 

⠼ 24/29 ETA:  3s | 

⠴ 25/29 ETA:  2s | 

⠦ 26/29 ETA:  2s | 

⠧ 27/29 ETA:  1s | 

⠇ 28/29 ETA:  1s | 

                    

⠙ Compute and download timeseries (on GEE server)

✔ Compute and download timeseries (on GEE server) [12ms]
## 
⠙ 1/29 ETA:  1s | 

⠹ 2/29 ETA:  1s | 

⠸ 3/29 ETA:  1s | 

⠼ 4/29 ETA:  1s | 

⠴ 5/29 ETA: 16s | 

⠦ 6/29 ETA: 13s | 

⠧ 7/29 ETA: 11s | 

⠇ 8/29 ETA: 10s | 

⠏ 9/29 ETA: 12s | 

⠋ 10/29 ETA: 11s | 

⠙ 11/29 ETA: 11s | 

⠹ 12/29 ETA: 11s | 

⠸ 13/29 ETA: 10s | 

⠼ 14/29 ETA: 10s | 

⠴ 15/29 ETA: 13s | 

⠦ 16/29 ETA: 11s | 

⠧ 17/29 ETA: 10s | 

⠇ 18/29 ETA: 14s | 

⠏ 19/29 ETA: 12s | 

⠋ 20/29 ETA: 13s | 

⠙ 21/29 ETA: 11s | 

⠹ 22/29 ETA:  9s | 

⠸ 23/29 ETA:  7s | 

⠼ 24/29 ETA:  6s | 

⠴ 25/29 ETA:  5s | 

⠦ 26/29 ETA:  3s | 

⠧ 27/29 ETA:  2s | 

⠇ 28/29 ETA:  1s | 

                    

Note that if a position on the path is over water, it is automatically moved to the closest point onshore as we use ERA5 Land.

plot_pressurepath(pressurepath)
## Warning in abs(pp$error)/sd[pp$stap_id]: longer object length is not a multiple
## of shorter object length

6.3 Altitude

pressurepath is the best way to compute the altitude of the bird throughout its trajectory, including flights.

plot_pressurepath(pressurepath, type = "altitude")

6.4 Save

The graph object can become extremely big for such models, and it might not be recommended to save it. Check its size with format(object.size(graph), units = "MB").

save(
  tag,
  # graph,
  pressurepath,
  path_most_likely,
  path_simulation,
  marginal,
  file = "./data/interim/18LX.RData"
)